﻿#region
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
#endregion

namespace Rectangular.Model.Sprites
{
    public abstract class Sprite
    {
        /* The height of the sprite */
        private int height;
        /* The width of the sprite */
        private int width;
        /* The position of the sprite on screen */
        private Vector2 position;
        /* This color of the sprite */
        private Color spriteColor;

        /// <summary>
        /// Constructs a new sprite
        /// </summary>
        public Sprite()
        {
            this.height = 32;
            this.width = 32;
            this.position = new Vector2();
            this.spriteColor = Color.White;
        }

        /// <summary>
        /// Constructs a new sprite
        /// </summary>
        /// <param name="position">The position of the sprite on screen</param>
        public Sprite(Vector2 position) : this()
        {
            this.position = position;
        }

        /// <summary>
        /// The color of the sprite
        /// </summary>
        public Color SpriteColor
        {
            get { return this.spriteColor; }
            set { this.spriteColor = value; }
        }

        /// <summary>
        /// The height of the sprite
        /// </summary>
        public int Height
        {
            get { return this.height; }
            set { this.height = value; }
        }

        /// <summary>
        /// The width of the sprite
        /// </summary>
        public int Width
        {
            get { return this.width; }
            set { this.width = value; }
        }

        /// <summary>
        /// The position of the sprite on screen
        /// </summary>
        public Vector2 Position
        {
            get { return this.position; }
            set { this.position = value; }
        }

        /// <summary>
        /// Draws the sprite
        /// </summary>
        /// <param name="spriteBatch"></param>
        public abstract void Draw(SpriteBatch spriteBatch);
    }
}